package trunk.grupo4Practico2.src;



import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.JOptionPane;
public class Main {

	/**
	 * @param args
	 */
	public String leer(String nombre)
	/*
	 * El parametro nombre indica el nombre del archivo por ejemplo "prueba.txt"
	 */
	{
		File f;
		FileReader lectorArchivo;
		try {
			f = new File(nombre);
			lectorArchivo = new FileReader(f);
			BufferedReader br = new BufferedReader(lectorArchivo);
			String l = "";
			String aux = "";
			while (true) {
				aux = br.readLine();
				if (aux != null)
					l = l + aux + "\n";
				else
					break;

			}
			br.close();
			lectorArchivo.close();
			return l;
		} catch (IOException e) {
			System.out.println("Error:" + e.getMessage());
		}
		return null;
	}

	@SuppressWarnings("unused")
	public static void main(String[] args) {
		Main main = new Main();
		//main.leer("numeros.txt");
		TLista  miLista = new TLista();
			 
		        Object opcion = null ;//se crea una variable que recibirá la opción 
		 
		        do{//comienzo del ciclo
		             opcion = JOptionPane.showInputDialog(null,
		            		" 1. Ingresar un Elemento al Principio de la Lista.\n " +
							" 2. Ingresar un Elemento al Final de la Lista\n " +
							" 3. Buscar un Elemento\n " +
							" 4. Eliminar un Elemento\n " +
							" 5. Insertar en Forma Ordenada un Elemento\n " +
							" 6. Imprimir Elementos \n " +
							" 7. Eliminar Elementos Duplicados\n " +		            								
							" 0. Salir." , "Opciones", JOptionPane.QUESTION_MESSAGE, null,  new Object[] { "1", "2", "3", "4", "5","6","7","0" }, 
		            		   "0");		             
		            if(opcion== null){
		            	 System.exit(0);
		            }
		            		
		            
		            if(opcion.equals("1")){
		               IElemento elemento = new TElemento (null) ;
		            	String insertar =JOptionPane.showInputDialog("Elemento a Insertar");			           
		            	try
		            	   {
		            		 if(JOptionPane.CANCEL_OPTION != 2){
		            			 Integer.parseInt (insertar);
		            		 }
		            		 
			            	 if(insertar != null  ){

			                    	elemento.setEtiqueta(insertar);
			            		 if (miLista.insertarAlPrincipio(elemento) == true){
			            			 JOptionPane.showMessageDialog(null, "Elemento insertado");
			            		 }else{
			            			 JOptionPane.showMessageDialog(null, "No fue posible insertar");
			            		 }
			            	 }
		            	   }
		            	   catch (NumberFormatException e)
		            	   {
		            		   JOptionPane.showMessageDialog(null, "No fue posible insertar");
		            	   } 
		                }
		            
		            else if(opcion.equals("2")){
		                IElemento elemento = new TElemento (null) ;
		            	String insertar =JOptionPane.showInputDialog("Elemento a Insertar");	
		            	try
		            	   {
		            		 if(JOptionPane.CANCEL_OPTION != 2){
		            			 Integer.parseInt (insertar);
		            		 }
		            		 
			            	 if(insertar != null  ){

	
			                    	elemento.setEtiqueta(insertar);
			            		 if (miLista.insertarAlFinal(elemento) == true){
			            			 JOptionPane.showMessageDialog(null, "Elemento insertado");
			            		 }else{
			            			 JOptionPane.showMessageDialog(null, "No fue posible insertar");
			            		 }
			            	 }
		            	   }
		            	   catch (NumberFormatException e)
		            	   {
		            		   JOptionPane.showMessageDialog(null, "No fue posible insertar");
		            	   } 
		                }
		            else if(opcion.equals("3")){
		            	String buscar;
		            	 buscar =JOptionPane.showInputDialog("Clave a Buscar");	
		            	 if(buscar != null){
		            		 
		            		 if (miLista.buscar(buscar) == null){
		            			 JOptionPane.showMessageDialog(null, "Elemento no encontrado");
		            		 }else{
		            			 JOptionPane.showMessageDialog(null, "Elemento encontrado");
		            		 }
		            	 }
			        }
		            else if(opcion.equals("4")){
		            	String eliminar;
		            	 eliminar =JOptionPane.showInputDialog("Elemento a Eliminar");	
		            	 if(eliminar != null){
		            		 if (miLista.eliminar(eliminar) != null){
		            			 JOptionPane.showMessageDialog(null, "Elemento eliminado");
		            		 }else{
		            			 JOptionPane.showMessageDialog(null, "Elemento no Eliminado");
		            		 }
		            	 }
				    }
				    else if(opcion.equals("5")){
				    	 IElemento elemento = new TElemento (null) ;
			            	String insertar =JOptionPane.showInputDialog("Elemento a Insertar");	
			            	try
			            	   {
			            		 if(JOptionPane.CANCEL_OPTION != 2){
			            			 Integer.parseInt (insertar);
			            		 }
			            		 
				            	 if(insertar != null  ){
			            	
				                    	elemento.setEtiqueta(insertar);
				            		 if (miLista.insertarOrdenado(elemento) == true){
				            			 JOptionPane.showMessageDialog(null, "Elemento insertado");
				            		 }else{
				            			 JOptionPane.showMessageDialog(null, "No fue posible insertar");
				            		 }
				            	 }
			            	   }
			            	   catch (NumberFormatException e)
			            	   {
			            		   JOptionPane.showMessageDialog(null, "No fue posible insertar");
			            	   } 
			                }		
					else if(opcion.equals("6")){
			            	JOptionPane.showMessageDialog(null,miLista.imprimirElementos());				 
					}
					else if(opcion.equals("7")){;	            		 
			            		 if (miLista.eliminarDuplicados() == true){
			            			 JOptionPane.showMessageDialog(null, "Elemento duplicados Eliminados");
			            		 }else{
			            			 JOptionPane.showMessageDialog(null, "No se eliminaron elementos");
			            		 }
			            	 }
					
		            
		            else if(opcion.equals("0")){
		                System.exit(0);//comando para cerrar las aplicaciones
		            }
		            else
		            {
		            	JOptionPane.showMessageDialog(null, "Ingrese una opcion valida");
		            }
		        }while(!opcion.equals("0")|| opcion != null);//finaliza el ciclo con la condicional que hay dentro del while
		    }//final del método principal

	}

